package com.seed.fileud.service;

import com.seed.fileud.pojo.FileStatus;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;

public interface FileudService {

    /**
     * 验证文件存在的情况
     * @param bucket 桶
     * @param path 路径：形如：2024/07/27/
     * @param hash 文件哈希
     * @param fileName 文件名
     * @param chunkCount 文件块的数量
     * @return 文件状态
     */
    FileStatus validate(String bucket, String path, String hash, String fileName, Integer chunkCount);

    /**
     * 上传文件
     * @param bucket
     * @param path
     * @param hash
     * @param multipartFile
     * @return
     */
    String uploadFile(String bucket, String path, String hash, MultipartFile multipartFile);

    /**
     * 上传文件块
     * @param bucket
     * @param path
     * @param hash
     * @param chunkIndex
     * @param multipartFile
     */
    void uploadChunk(String bucket, String path, String hash, Integer chunkIndex, MultipartFile multipartFile);


    /**
     * 合并文件
     * @param bucket
     * @param path
     * @param hash
     * @param fileName
     */
    String merge(String bucket, String path, String hash, String fileName);

    /**
     * 删除文件
     * @param filePath
     */
    void remove(String filePath);

    /**
     * 获取文件大小
     *
     * @param filePath
     * @return
     */
    File file(String filePath);

    byte[] readFile(String filePath, Long offset, Long length);
}
